home *** CD-ROM | disk | FTP | other *** search
/ Champak 138 / Volume 138 Aug 19 2011 - Damaged.iso / Games / shadez.swf / scripts / Local / Game / Thing / CShotTomahawk.as < prev    next >
Encoding:
Text File  |  2011-08-19  |  6.2 KB  |  239 lines

  1. package Local.Game.Thing
  2. {
  3.    import Local.Game.World.*;
  4.    import Local.Game.World.Map.*;
  5.    import Local.Game.World.Map.Cell.*;
  6.    import Local.Math.*;
  7.    import STC9.System.*;
  8.    import flash.display.*;
  9.    import flash.events.*;
  10.    import flash.geom.*;
  11.    
  12.    public class CShotTomahawk extends CShot
  13.    {
  14.        
  15.       
  16.       private var mPath:CPath;
  17.       
  18.       private var mImpactDistance:Number;
  19.       
  20.       private var mFlare:CThingAnimation;
  21.       
  22.       private var mExplode:Boolean;
  23.       
  24.       public function CShotTomahawk(param1:CPosition, param2:*)
  25.       {
  26.          param1.x = -400;
  27.          param1.y = 100;
  28.          super(param1);
  29.          mType = "tomahawk";
  30.          Process = Process_Normal;
  31.          mAngle = new CAngle();
  32.          mDelta = new CPosition();
  33.          mMaxLife = mLife = 100;
  34.          mMaxSpeed = 250 * mSpriteScalar;
  35.          mSpeed = 0;
  36.          mAcceleration = 10;
  37.          mOrientation = 1;
  38.          mShowOnMap = true;
  39.          mTargetAirbourne = true;
  40.          AddAnimation("stand",Tomahawk,"AddSprite_Black");
  41.          SetCollisionBySprite(mAnimation[0]);
  42.          AddThing(mFlare = new CThingAnimation(Tomahawk_Flare,"AddSprite_Scale"));
  43.          mTarget = param2 is CPosition ? param2 : param2.mPosition;
  44.          SetState("GOTOTARGET");
  45.          IncrementFired();
  46.       }
  47.       
  48.       public function State_GOTOTARGET_Exit() : void
  49.       {
  50.       }
  51.       
  52.       public function State_FOLLOWPATH_Enter() : void
  53.       {
  54.          if(true)
  55.          {
  56.             mPath = new CPath();
  57.             if(true)
  58.             {
  59.                ┬º┬ºpush(mPath);
  60.                if(true)
  61.                {
  62.                   ┬º┬ºpop().SetPath([mPosition,new Point((mPosition.x + mTarget.x) / 2,mPosition.y),mTarget]);
  63.                   addr49:
  64.                   ┬º┬ºpush(mPath);
  65.                }
  66.                ┬º┬ºpop().OrientateThing(this);
  67.                ┬º┬ºgoto(addr52);
  68.             }
  69.             ┬º┬ºgoto(addr49);
  70.          }
  71.          addr52:
  72.       }
  73.       
  74.       public function State_FOLLOWPATH_Exit() : void
  75.       {
  76.       }
  77.       
  78.       public function State_NOPATH() : void
  79.       {
  80.          if(true)
  81.          {
  82.             mDelta = CPosition.NORMALIZE(mAngle.mDelta,mSpeed);
  83.             mPosition.Add(mDelta);
  84.          }
  85.       }
  86.       
  87.       public function State_GOTOTARGET() : void
  88.       {
  89.          mDelta = CPosition.NORMALIZE(mAngle.mDelta,mSpeed);
  90.          mPosition.Add(mDelta);
  91.          if(Math.abs(mPosition.x - mTarget.x) < Math.abs(mPosition.y - mTarget.y) * 4)
  92.          {
  93.             SetState("FOLLOWPATH");
  94.          }
  95.       }
  96.       
  97.       public function CreateExplosion() : void
  98.       {
  99.          Explode();
  100.          AddThing(new CEffectExplosionMedium(mPosition,250));
  101.          mDead = true;
  102.          DispatchDispose();
  103.       }
  104.       
  105.       override public function Draw() : void
  106.       {
  107.          var _loc1_:Matrix = null;
  108.          var _loc2_:Point = null;
  109.          if(true)
  110.          {
  111.             super.Draw();
  112.             DrawTrail(4,150);
  113.          }
  114.          _loc1_ = GetOrientationMatrix();
  115.          if(true)
  116.          {
  117.             DrawSprite(_loc1_);
  118.          }
  119.          _loc2_ = _loc1_.transformPoint(mSprite.mObjects["flare"].mPosition);
  120.          mFlare.mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y);
  121.          mFlare.mAngle.Copy(mAngle);
  122.          mFlare.Draw();
  123.       }
  124.       
  125.       public function Process_Normal() : void
  126.       {
  127.          var _loc1_:Point = null;
  128.          Accelerate_Speed();
  129.          if(Process_State != null)
  130.          {
  131.             Process_State();
  132.          }
  133.          if(mDisposed)
  134.          {
  135.             return;
  136.          }
  137.          mCollide.Update();
  138.          if(MapMoveTrail())
  139.          {
  140.             if(Process_ReachedObjective())
  141.             {
  142.                return;
  143.             }
  144.          }
  145.          Process_Children();
  146.          _loc1_ = OrientatePoint(mSprite.mObjects["payload"].mPosition.clone(),mPosition);
  147.          if(true)
  148.          {
  149.             if(_loc1_.y >= mLandscape.GetAltitude(_loc1_.x))
  150.             {
  151.                if(true)
  152.                {
  153.                   mPosition.SetXY(_loc1_.x,mLandscape.GetAltitude(_loc1_.x));
  154.                   if(true)
  155.                   {
  156.                      ┬º┬ºgoto(addr72);
  157.                   }
  158.                   ┬º┬ºgoto(addr81);
  159.                }
  160.                ┬º┬ºgoto(addr91);
  161.             }
  162.             addr72:
  163.             ┬º┬ºpush(mExplode);
  164.             if(true)
  165.             {
  166.                ┬º┬ºpush(┬º┬ºpop());
  167.                if(true)
  168.                {
  169.                   if(┬º┬ºpop())
  170.                   {
  171.                   }
  172.                   ┬º┬ºgoto(addr90);
  173.                }
  174.                ┬º┬ºpop();
  175.                addr81:
  176.                ┬º┬ºpush(mDead);
  177.             }
  178.             addr90:
  179.             if(┬º┬ºpop())
  180.             {
  181.                addr91:
  182.                CreateExplosion();
  183.                ┬º┬ºgoto(addr93);
  184.             }
  185.             addr93:
  186.             return;
  187.          }
  188.          ┬º┬ºgoto(addr91);
  189.       }
  190.       
  191.       public function State_GOTOTARGET_Enter() : void
  192.       {
  193.       }
  194.       
  195.       public function State_NOPATH_Exit() : void
  196.       {
  197.       }
  198.       
  199.       public function State_NOPATH_Enter() : void
  200.       {
  201.       }
  202.       
  203.       public function State_FOLLOWPATH() : void
  204.       {
  205.          var _loc1_:* = false;
  206.          var _loc2_:Number = NaN;
  207.          ┬º┬ºpush(Math.abs(mTarget.x - mPosition.x) <= mSpeed);
  208.          if(true)
  209.          {
  210.             _loc1_ = ┬º┬ºpop();
  211.             ┬º┬ºpush(_loc1_);
  212.             if(true)
  213.             {
  214.                _loc2_ = !!┬º┬ºpop() ? mTarget.x - mPosition.x : mSpeed;
  215.                ┬º┬ºgoto(addr68);
  216.             }
  217.             ┬º┬ºgoto(addr52);
  218.          }
  219.          addr68:
  220.          ┬º┬ºpush(mPath);
  221.          if(true)
  222.          {
  223.             addr52:
  224.             if(!┬º┬ºpop().MoveAlong(_loc2_))
  225.             {
  226.                mExplode = true;
  227.                return;
  228.             }
  229.             ┬º┬ºpush(mPath);
  230.          }
  231.          ┬º┬ºpop().OrientateThing(this);
  232.          if(_loc1_)
  233.          {
  234.             mExplode = true;
  235.          }
  236.       }
  237.    }
  238. }
  239.